﻿using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEditor;

namespace CounterApp.Editor
{
    public class EditorCounterApp : EditorWindow
    {
        static string showCout = "0";

        // Open让这个编辑器拓展插件能在unity顶部菜单栏被打开
        [MenuItem("EditorCounterApp/Open")]
        static void Open()
        {
            var window = GetWindow<EditorCounterApp>();
            window.position = new Rect(100, 100, 400, 600);
            window.titleContent = new GUIContent(nameof(EditorCounterApp));
            window.Show();

            CounterModel.Instance.Count.OnValueChanged += OnCounterChange;
        }

        // 表现逻辑，编写CounterModel.Count这个bindableProperty的事件处理函数
        private static void OnCounterChange(int newCount)
        {
            showCout = newCount.ToString();
        }
        
        // 核心的View功能在这里实现
        // 可以发现我们在引用了命令模式后，交互逻辑非常容易编写（Controller编写的非常迅速）
        // Controller编写的迅速，进而让我们可以自由地切换View
        private void OnGUI()
        {
            if(GUILayout.Button("+"))
            {
                // 交互逻辑，创建命令一行完事
                new AddCountCommand()
                    .Execute();
            }
            // 表现逻辑
            GUILayout.Label(showCout);
            // GUILayout.Label(CounterModel.Count.Value.ToString());
            // 因为GUILayout是实时更新的，所以实际上我们可以直接像上面那样写
            if (GUILayout.Button("-"))
            {
                new SubCountCommand()
                    .Execute();
            }
        }
    }
}
